package com.lyf.design.learn.designmodel.command;

import org.junit.Test;

/**
 * @AUTHOR LYF
 * @DATE 2022/6/4
 * @VERSION 1.0
 * @DESC
 */
public class Main {
    @Test
    public void test1(){
        Command command1=new TxtEditInsertCommand("command1");
        command1.exec();
//        command1.undo();
//        command1.undo();
        // 需要将content改为共享变量（static）--，或其他方式存储
        // 产生回退混乱？？，改为共享变量，则需要严格按照执行顺序回退了---，list也是静态---
        // 若想只回退指定的指令的操作序列，则需要修改实现方法
        Command command2=new TxtEditInsertCommand("command2");
        command2.exec();

//        command2.undo();
//        command2.undo();
//        command1.undo();

//         command1.undo();
//         command2.undo();
    }

    @Test
    public void test2(){
        Command command1=new TxtEditInsertCommand("command1");
        command1.exec();
//        command1.undo();
//        command1.undo();
        // 需要将content改为共享变量（static）--，或其他方式存储
        // 产生回退混乱？？，改为共享变量，则需要严格按照执行顺序回退了---，list也是静态---
        // 若想只回退指定的指令的操作序列，则需要修改实现方法
        Command command2 = new TxtEditInsertCommand("command2Ok");
        command2.exec();

//        command2.undo();
//        command2.undo();
//        command1.undo();

        // 出问题了---需要维护的操作序列静态化--这样来每个实例的回退则是回退最近一次操作，而不是该类操作的最后一次操作
        // 可以继续深挖，指定回退OR共享回退--
         command1.undo();
         command2.undo();
    }

}
